package com.enjoyor.soa.traffic.api.ubms.service.dubbo;

import com.enjoyor.soa.traffic.api.ubms.dto.VideoStreamInfoDto;
import com.enjoyor.soa.traffic.util.pojo.Page;
import com.enjoyor.soa.traffic.util.pojo.ResultPojo;

@SuppressWarnings("rawtypes")
/**
 * 维护流媒休服务器信息的Dubbo服务
 * @author yuankun
 * @version V1.0
 */
public interface DubboVideoStreamInfoService {
	
	/**
	 * 返回所有流媒体服务器信息
	 * @return ResultPojo 流媒体服务器信息
	 */
	public ResultPojo getVideoStreamInfo();
	/**
	 * 分页返回所有流媒体服务器信息
	 * @param page 分页对象
	 * @return ResultPojo 流媒体服务器信息
	 */
	public ResultPojo getPageVideoStreamInfo(Page page);	
	/**
	 * 返回所有流媒体服务器信息
	 * * @param streamId 
	 * * @param streamName
	 * * @param letterAbbr
	 * * @param streamIp
	 * * @param manageId
	 * * @param manageDeptId
	 * * @param orderSeq
	 * * @param deviceStatusCode
	 * @return ResultPojo 流媒体服务器信息
	 */
	public ResultPojo getVideoStreamInfo(String streamId, String streamName,
			String letterAbbr, String streamIp, String manageId,
			String manageDeptId, String orderSeq, String deviceStatusCode);
	
	/**
	 * 分页返回所有流媒体服务器信息
	 * @param deviceStatusCode 
	 * @param orderSeq 
	 * @param manageDeptId 
	 * @param manageId 
	 * @param streamIp 
	 * @param letterAbbr 
	 * @param streamName 
	 * @param streamId 
	 * @param page 分页对象
	 * @return ResultPojo 流媒体服务器信息
	 */
	public ResultPojo getPageVideoStreamInfo(String streamId, String streamName, String letterAbbr, String streamIp, 
			String manageId, String manageDept, String orderSeq, String deviceStatusCode, Page page);
	
	/**
	 * 返回指定编码的流媒体服务器信息
	 * @param streamId 流媒体服务器编码
	 * @return ResultPojo 流媒体服务器信息
	 */
	public ResultPojo getVideoStreamInfoById(String streamId);
	
	/**
	 * 按名称匹配并返回流媒体服务器信息
	 * @param streamName 流媒体服务器名称
	 * @return ResultPojo 流媒体服务器信息
	 */
	public ResultPojo getVideoStreamInfoByName(String streamName);
	
	/**
	 * 返回与前缀相匹配的流媒体服务器最大编码值，用于手工生成新的编码
	 * @param prefixStreamId 流媒体服务器编码前缀
	 * @return String 与前缀相匹配的流媒体服务器最大编码值
	 */
	public String getMaxStreamId(String prefixStreamId);
	
	/**
	 * 添加一条流媒体服务器信息
	 * @param token 外部传入信息
	 * @param videoStreamInfoDto 流媒体服务器信息
	 * @return ResultPojo 添加结果
	 */
	public ResultPojo addVideoStreamInfo(String token, VideoStreamInfoDto videoStreamInfoDto);
	
	/**
	 * 修改一条流媒体服务器信息
	 * @param token 外部传入信息
	 * @param videoStreamInfoDto 流媒体服务器信息
	 * @return ResultPojo 修改结果
	 */
	public ResultPojo editVideoStreamInfo(String token, VideoStreamInfoDto videoStreamInfoDto);
	
	/**
	 * 删除指定编码的流媒体服务器信息
	 * @param token 外部传入信息
	 * @param streamId 流媒体服务器编码
	 * @return ResultPojo 删除结果
	 */
	public ResultPojo removeVideoStreamInfo(String token, String streamId);

}
